package datastructure;


import org.junit.jupiter.api.Test;

/**
 * @Filename: DataStructureTest
 * @Author: czh
 * @Data:2023/1/3 11:35
 */
public class DataStructureTest {
    /**
     * 链表反转
     */
    @Test
    public Node1 test01(Node1 head) {
        if (head == null || head.next == null) {
            return head;
        }
        // 普通实现
//        Node1 ln = null; // 新链表，结果链表
//        Node1 cur = head; // 赋值给后面将要被操作的链表
//        Node1 next; // 保存链表下一个的节点
//        if (cur != null) {
//            while (cur != null) {
//                // 保存需要操作的链表的下一个节点
//                next = cur.next;
//                // 使用前插法添加到新链表的头部
//                cur.next = ln;
//                // 赋值结果链表
//                ln = cur;
//                // 将下一步要操作的节点链表重新赋值给cur
//                cur = next;
//            }
//        }
//        return ln;
        // 递归实现
        Node1 node1 = test01(head.next);
        head.next.next = head;
        head.next = null;
        return node1;
    }

    class Node1 {
        // 每个节点的数据
        public Object data;
        // 每个节点指向下一个节点的连接
        public Node1 next; // 指向下一个节点

        // 构造器
        public Node1(Object data) {
            this.data = data;
        }
    }

}
